<template>
  <div class="count">
    <h2>当前求和为：{{sum}}，放大10倍后：{{$store.getters.bigSum}}</h2>
    <br>
    <span>作者：{{author}}，大写后：{{$store.getters.upperAuthor}}</span>
    <br><br>
    <select v-model.number="n">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
    </select>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
    <button @click="incrementOdd">当前和为奇数再加</button>
    <button @click="incrementWait">等一等再加</button>
    <button @click="incrementServer">问问服务器加几</button>
    <!-- <button @click="test">测试一下mapState</button> -->
  </div>
</template>

<script>
  import {mapState} from 'vuex'

  export default {
    name:'Count',
    data() {
      return {
        n:1,
      }
    },
    computed: {
      // 若不用mapState,写起来就会很麻烦
      /* he(){
        return this.$store.state.sum
      },
      zuozhe(){
        return this.$store.state.author
      } */

      // 借助mapState帮助我们批量生成计算属性，快速的读取state中的数据 —— 该过程称为：【映射state】
      // ...mapState({he:'sum',zuozhe:'author'}),


      /* ************************************************************************************* */

      // 若不用mapState,写起来就会很麻烦
      /* sum(){
        return this.$store.state.sum
      },
      author(){
        return this.$store.state.author
      } */

      ...mapState(['sum','author']),
      a(){
        return 100
      }

    },
    methods: {
      increment(){
        //联系用于加的mutation
        this.$store.commit('JIA',this.n)
      },
      decrement(){
        //联系用于加的mutation
        this.$store.commit('JIAN',this.n)
      },
      incrementOdd(){
         // 联系actions中的jishujia方法（联系jishujia这个服务员）
        this.$store.dispatch('jishujia',this.n)
      },
      incrementWait(){
         // 联系actions中的dengjia方法（联系dengjia这个服务员）
         this.$store.dispatch('dengjia',this.n)
      },
      incrementServer(){
        this.$store.dispatch('fuwujia')
      },
      /* test(){
        let x = mapState({
          he:'sum',
          zuozhe:'author'
        })
        console.log(x)
      } */
    }
  }
</script>

<style scoped>
  .count {
    background-color: skyblue;
    padding: 10px;
    box-shadow: 0 0 10px black;
    border-radius: 10px;
  }
  h2 {
    margin-bottom: 0px;
  }
  button {
    margin-left: 10px;
  }
</style>